home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / bastodos.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  45.5 KB  |  1,545 lines

  1. 10  '*
  2. 15  '*************************************************************************
  3. 20  '*
  4. 25  '*                     BASIC WORKSHOP SERIES
  5. 30  '*
  6. 35  '*                           NUMBER   1
  7. 40  '*
  8. 45  '*                              BY
  9. 50  '*
  10. 55  '*                         JAMES P. MORGAN
  11. 60  '*                   1749 AMERICANA BLVD APT 23-G
  12. 65  '*                         ORLANDO FLA, 32809
  13. 70  '*
  14. 75  '*                     WORK PH:(305) 826-7297
  15. 80  '*
  16. 85  '*  I HAVE PUT TOGETHER, FOR YOU, A SET OF CALLABLE ASSEMBLER SUBROUTINES
  17. 90  '* FROM BASIC, TO ALLOW YOU MORE CONTROL OVER YOUR SYSTEM. THESE ROUTINES
  18. 95  '* ENABLE YOU TO ACCESS DOS FUNCTIONS NOT SUPPORTED BY THE INTERPRETER OR
  19. 100  '* THE BASIC COMPILER, FOR MOST OF THE NEW EXTENDED DOS 2.0 FUNCTIONS.
  20. 105  '*
  21. 110  '*  I HAVE DEBUGGED THE ROUTINES AS MUCH AS MY LIMITED TIME WOULD PERMIT.
  22. 115  '* PLEASE EXCUSE THE TYPING ERROR, I COME FROM THE HUNT AND PEEK SCHOOL
  23. 120  '* OF TYPING. ALSO I SCRATCHED MY MASTER FILE AND HAD TO REKEY ALL OF THIS.
  24. 125  '* THE LESSON LEARNED , ALWAYS KEEP A BACK UP OF LARGE FILES, EVEN IF
  25. 130  '* NOT A TOTAL CURRENT ONE.
  26. 135  '*
  27. 140  '*  A NOTE OF WARNING, THESE SUBROUTINES DO LITTLE OR NO VALIDITY CHECKING
  28. 145  '* AS TO THE FORMAT, TYPE AND RANGE OF VARIABLES PASSED, SO BE WARNED IF
  29. 150  '* YOU DO NOT FOLLOW THE RULES AND YOUR MACHINE LOCKS UP TIGHT.
  30. 155  '*
  31. 160  '*  THERE ARE MORE SUBROUTINES FORTHCOMING, SO LOOK FOR THEM, SUCH AS
  32. 165  '* GETTING/SETTING THE INTERRUPT VECTORS, PARSEING A FILENAME, PASSING
  33. 170  '* RETURN CODES FROM A PROGRAM TO BATCH JOBS, AND MORE.
  34. 175  '*
  35. 180  '*                        DOS 2.0 DEFINITIONS
  36. 185  '*                      -----------------------
  37. 190  '*
  38. 195  '*       ASCIIZ STRING - NORMAL TEXT STRING, USUALLY CONSISTING OF A DRIVE,
  39. 200  '*                      PATH , AND/OR FILENAME (EXP:"A:\COBOL\COBPGM.COB")
  40. 205  '*                      TERMINATED BY A HEX 00/(CHR$(0)).
  41. 210  '*
  42. 215  '*   THERE ARE MORE RETURN CODES OUTPUT BY THE NEW DOS 2.0 FUNCTION CALLS.
  43. 220  '*
  44. 225  '*   1 - INVALID FUNCTION NUMBER
  45. 230  '*   2 - FILE NOT FOUND
  46. 235  '*   3 - PATH NOT FOUND
  47. 240  '*   4 - TOO MANY OPEN FILES
  48. 245  '*   5 - ACCESS DENIED
  49. 250  '*   6 - INVALID HANDLE
  50. 255  '*   7 - MEMORY CONTROL BLOCKS DESTROYED
  51. 260  '*   8 - INSUFFICIENT MEMORY
  52. 265  '*   9 - INVALID MEMORY BLOCK ADDRESS
  53. 270  '*  10 - INVALID ENVIRONMENT
  54. 275  '*  11 - INVALID FORMAT
  55. 280  '*  12 - INVALID ACCESS CODE
  56. 285  '*  15 - INVALID DRIVE WAS SPECIFIED
  57. 290  '*  16 - ATTEMPTED TO REMOVE THE CURRENT DIRECTORY
  58. 295  '*  17 - NOT SAME DEVICE
  59. 300  '*  18 - MO MORE FILES
  60. 305  '*
  61. 310  '*   SOME SUBROUTINES STILL DO CALLS TO THE DOS 1.1 FUNCTION CALLS
  62. 315  '*  AND THEY RETURN THEIR OWN PARTICULAR RESULT CODES.
  63. 320  '*
  64. 325  '*   AS ALWAYS, IF IN DOUBT, CONSULT THE TECHNICAL GUIDE AND THE TECHNICAL
  65. 330  '*  SECTION OF THE DOS MANUAL AS TO THE FORMAT AND OBJECTIVE OF ANY OF THE
  66. 335  '*  FUNCTION CALLS.
  67. 340  '*
  68. 345  '*  NOTE:
  69. 350  '*       THE PROGRAMS WILL CREATE A .COM TYPE FILE, IF YOU TEST RUN EACH
  70. 360  '*    ONE SEPARATELY. THESE .COM TYPE FILES MAY THEN BE READ BY OTHER
  71. 370  '*    PROGRAMS AND POKED INTO A VARIABLE ARRAY IN THE NEW PROGRAM, AS WAS
  72. 380  '*    DONE IN THE TEST PROGRAMS.
  73. 390  '*       BOTH THE INTERPERTER AND BASIC COMPILER ARE SUPPORTED IN THE DATA
  74. 400  '*    STATEMENTS IN THE PROGRAMS. YOU MUST, I REPEAT, YOU MUST COMMENT OUT
  75. 405  '*    THE DATA STATEMENTS FLAGGED THAT DO NOT APPLY TO THE MODE YOU ARE
  76. 410  '*    RUNNING IN. YOU CANNOT RUN THE BASIC COMPILER DATA STATEMENTS WHILE
  77. 415  '*    RUNNING THE INTERPERTER. YOU MAY HOWEVER CREATE THE .COM TYPE FILES
  78. 420  '*    FOR USE BY COMPILED PROGRAMS. BY CHANGING THE DATA STATEMENTS AS
  79. 425  '*    ADVISED AND PUTTING AN "END' STATEMENT JUST AFTER THE 'GOSUB' THAT
  80. 430  '*    CREATES THE DISK .COM FILE.
  81. 435  '*
  82. 440  '*   'KEEP ON COMPUTING AND SHARING'
  83. 500  '**********************************************************************
  84. 501  '*
  85. 502  '* SUBROUTINE FUNCTION : CNTL-BREAK CHECK
  86. 503  '*
  87. 504  '* VERSION             : 1.0
  88. 505  '*
  89. 506  '* DATE LAST UPDATED   : SEPT 25, 1983
  90. 507  '*
  91. 508  '* AUTHOR              : JAMES P MORGAN
  92. 509  '*
  93. 510  '* CALL FORMAT         :
  94. 511  '* ---------------------
  95. 512  '* CALL OFFSET%(CNTL.BREAK.STATE%,RETURN.CODE%)
  96. 513  '*
  97. 514  '* PARAMETERS PASSED   : CNTL.BREAK.STATE% (00=REQUEST CURRENT STATE
  98. 515  '*                                          01=FLIP/FLOP CURRENT STATE
  99. 516  '*
  100. 517  '*                       RETURN.CODE%=0
  101. 518  '*
  102. 519  '* PARAMETERS RETURNED : CNTL.CREAK.STATE%
  103. 520  '*
  104. 521  '*                       RETURN.CODE%       (00=CNTL-BREAK ON
  105. 522  '*                                           01=CNTL-BREAK OFF)
  106. 523  '*
  107. 524  '* COMMENTS            :
  108. 525  '*
  109. 526  '*                       THIS SUBROUTINE WILL FLIP/FLOP THE CNTL-BREAK
  110. 527  '*                     SWITCH FROM ON/OFF OR OFF/ON AND RETURN THE CURRENT
  111. 528  '*                     STATE OR JUST RETURN THE CURRENT STATE OF THE
  112. 529  '*                     CNTL-BREAK SWITCH.
  113. 530  '*
  114. 531  '**************************************************************************
  115. 537  CLS
  116. 538  CLOSE
  117. 539  DEF SEG
  118. 540  DEFINT A-Z
  119. 541  DIM SUBRT%(40)
  120. 542  OFFSET%=0
  121. 543  CNTL.BREAK.STATE%=0
  122. 544  CURRENT.STATE%=0
  123. 545  RETURN.CODE%=0
  124. 546  GOSUB 576
  125. 547  GOSUB 555
  126. 548  OFFSET%=VARPTR(SUBRT%(0))
  127. 549  CALL OFFSET%(CNTL.BREAK.STATE%,RETURN.CODE%)
  128. 550  CURRENT.STATE%=RETURN.CODE%
  129. 551  PRINT "CNTL BREAK REQUEST= ";CNTL.BREAK.STATE%
  130. 552  PRINT "CURRENT STATE     = ";CURRENT.STATE%
  131. 553  PRINT "RETURN CODE       = ";RETURN.CODE%
  132. 554  END
  133. 555  FOR I=0 TO 31
  134. 556  READ J
  135. 557  POKE (VARPTR(SUBRT%(0))+I),J
  136. 558  NEXT
  137. 559  RETURN
  138. 560  DATA &H55
  139. 561  DATA &H89,&HE5
  140. 562  DATA &HB0,&H00
  141. 563  DATA &HB2,&H00
  142. 564  DATA &HB4,&H33
  143. 565  DATA &HCD,&H21
  144. 566  DATA &H8B,&H76,&H08
  145. 567  DATA &H8A,&H04
  146. 568  DATA &H80,&HF2,&H01
  147. 569  DATA &HB4,&H33
  148. 570  DATA &HCD,&H21
  149. 571  DATA &H8B,&H76,&H06
  150. 572  DATA &H88,&H14
  151. 573  DATA &H5D
  152. 574  DATA &HCA,&H04,&H00
  153. 575  END
  154. 576  RESTORE
  155. 577  FILENAME$="A:"+"CNTLBRK.EMU"
  156. 578  PGM.LEN=31
  157. 579  OPEN FILENAME$ AS #1 LEN=1
  158. 580  FIELD #1, 1 AS PGM.BYTE$
  159. 581  FOR I=0 TO PGM.LEN
  160. 582  READ J
  161. 583  LSET PGM.BYTE$=CHR$(J)
  162. 584  PUT #1
  163. 585  NEXT
  164. 586  CLOSE
  165. 587  RESTORE
  166. 588  RETURN
  167. 1000  '**********************************************************************
  168. 1001  '*
  169. 1002  '* SUBROUTINE FUNCTION : GET DRIVE TYPE
  170. 1003  '*
  171. 1004  '* VERSION             : 1.0
  172. 1005  '*
  173. 1006  '* DATE LAST UPDATED   : SEPT 25, 1983
  174. 1007  '*
  175. 1008  '* AUTHOR              : JAMES P MORGAN
  176. 1009  '*
  177. 1010  '* CALL FORMAT         :
  178. 1011  '* ---------------------
  179. 1012  '* CALL OFFSET%(DRIVE%,RETURN.CODE%)
  180. 1013  '*
  181. 1014  '* PARAMETERS PASSED   : DRIVE%            (00=DEFAULT,1=A,2=B..ECT)
  182. 1015  '*
  183. 1016  '*                       RETURN.CODE%=0
  184. 1017  '*
  185. 1018  '* PARAMETERS RETURNED : DRIVE%
  186. 1019  '*
  187. 1020  '*                       RETURN.CODE%       (255=INVALID DRIVE)
  188. 1021  '*
  189. 1022  '* COMMENTS            :
  190. 1023  '*
  191. 1024  '*                       THIS ROUTINE RETURNS THE DRIVE TYPE. THE DOS
  192. 1025  '*                     FUNCTION CALL '1CH' ID USED. THIS DOS FUNCTION CALL
  193. 1026  '*                     DOES NOT FUNCTION UNDER 2.0 AS IT DID UNDER 1.1.
  194. 1027  '*                       UNDER 1.1 THE FATS (FILE ALLOCATION TABLES) WERE
  195. 1028  '*                     MAINTAINED IN MEMORY AND THIS CALL WOULD POINT YOU
  196. 1029  '*                     TO THE FAT IN MEMORY.
  197. 1030  '*                       UNDER 2.0 THIS CALL NOW ONLY POINTS YOU TO THE
  198. 1031  '*                     DRIVE TYPE CODE IN MEMORY.
  199. 1032  '**************************************************************************
  200. 1033  CLS
  201. 1034  CLOSE
  202. 1035  DEF SEG
  203. 1036  DEFINT A-Z
  204. 1037  DIM SUBRT%(40)
  205. 1038  OFFSET%=0
  206. 1039  DRIVE%=0
  207. 1040  DUAL.8.SECTORS=255            'FF
  208. 1041  SINGLE.8.SECTORS=254          'FE
  209. 1042  DUAL.9.SECTORS=253            'FD
  210. 1043  SINGLE.9.SECTORS=252          'FC
  211. 1044  FIXED.DISK=248                'F8
  212. 1045  RETURN.CODE%=0
  213. 1046  GOSUB 1086
  214. 1047  GOSUB 1062
  215. 1048  REQUESTED.DRIVE%=DRIVE%
  216. 1049  OFFSET%=VARPTR(SUBRT%(0))
  217. 1050  CALL OFFSET%(DRIVE%,RETURN.CODE%)
  218. 1051  PRINT "DRIVE   REQUESTED = ";REQUESTED.DRIVE%
  219. 1052  PRINT "DRIVE TYPE CODE   = ";DRIVE%
  220. 1053  IF RETURN.CODE%=255 THEN DRIVE.TYPE$="INVALID DRIVE SPECIFIED":GOTO 1059
  221. 1054  IF DRIVE%=255 THEN DRIVE.TYPE$="DUAL.SIDED, 8 SECTORS PER TRACK"
  222. 1055  IF DRIVE%=254 THEN DRIVE.TYPE$="SINGLE SIDED, 8 SECTORS PER TRACK"
  223. 1056  IF DRIVE%=253 THEN DRIVE.TYPE$="DUAL SIDED, 9 SECTORS PER TRACK"
  224. 1057  IF DRIVE%=252 THEN DRIVE.TYPE$="SINGLE SIDED, 9 SECTORS PER TRACK"
  225. 1058  IF DRIVE%=248 THEN DRIVE.TYPE$="FIXED DISK"
  226. 1059  PRINT "DRIVE TYPE        = ";DRIVE.TYPE$
  227. 1060  PRINT "RETURN CODE       = ";RETURN.CODE%
  228. 1061  END
  229. 1062  FOR I=0 TO 37
  230. 1063  READ J
  231. 1064  POKE (VARPTR(SUBRT%(0))+I),J
  232. 1065  NEXT
  233. 1066  RETURN
  234. 1067  DATA &H55
  235. 1068  DATA &H89,&HE5
  236. 1069  DATA &H31,&HC0
  237. 1070  DATA &H31,&HDB
  238. 1071  DATA &H31,&HC9
  239. 1072  DATA &H31,&HD2
  240. 1073  DATA &H8B,&H76,&H08
  241. 1074  DATA &H8A,&H14
  242. 1075  DATA &HB4,&H1C
  243. 1076  DATA &H1E
  244. 1077  DATA &HCD,&H21
  245. 1078  DATA &H8A,&H27
  246. 1079  DATA &H1F
  247. 1080  DATA &H8B,&H76,&H08
  248. 1081  DATA &H88,&H24
  249. 1082  DATA &H8B,&H76,&H06
  250. 1083  DATA &H88,&H04
  251. 1084  DATA &H5D
  252. 1085  DATA &HCA,&H04,&H00
  253. 1086  RESTORE
  254. 1087  FILENAME$="A:"+"DRIVETYP.EMU"
  255. 1088  PGM.LEN=37
  256. 1089  OPEN FILENAME$ AS #1 LEN=1
  257. 1090  FIELD #1, 1 AS PGM.BYTE$
  258. 1091  FOR I=0 TO PGM.LEN
  259. 1092  PGM.LEN=37
  260. 1093  PUT #1
  261. 1094  NEXT
  262. 1095  CLOSE
  263. 1096  RESTORE
  264. 1097  RETURN
  265. 1500  '**********************************************************************
  266. 1501  '*
  267. 1502  '* SUBROUTINE FUNCTION : GET FIRST/NEXT MATCHING FILE
  268. 1503  '*
  269. 1504  '* VERSION             : 1.0
  270. 1505  '*
  271. 1506  '* DATE LAST UPDATED   : SEPT 25, 1983
  272. 1507  '*
  273. 1508  '* AUTHOR              : JAMES P MORGAN
  274. 1509  '*
  275. 1510  '* CALL FORMAT         :
  276. 1511  '* ---------------------
  277. 1512  '* CALL OFFSET%(FUNCTION.CODE%,ATTRIBUTE%,ASCIIZ.STRING$,DTA%(0),RETURN.CODE%)
  278. 1513  '*
  279. 1514  '* PARAMETERS PASSED   : FUNCTION.CODE%    (&H4E=FIND FIRST MATCHING FILE
  280. 1515  '*                                          &H4F=FIND NEXT MATCHING FILE)
  281. 1516  '*
  282. 1517  '*                       ATTRIBUTE%         (ATTRIBUTE TO BE USED IN
  283. 1518  '*                                           SEARCHING FOR THE FILE)
  284. 1519  '*
  285. 1520  '*                       ASCIIZ.STRING$     (DRIVE,PATH, AND FILENAME)
  286. 1521  '*
  287. 1522  '*                       DTA%(0)            (PSEUDO DTA TO HOLD MATCHING
  288. 1523  '*                                           FILE INFORMATION)
  289. 1524  '*
  290. 1525  '*                       RETURN.CODE%=0
  291. 1526  '*
  292. 1527  '* PARAMETERS RETURNED : FUNCTION.CODE%
  293. 1528  '*
  294. 1529  '*                       ATTRIBUTE%
  295. 1530  '*
  296. 1531  '*                       ASCIIZ.STRING$
  297. 1532  '*
  298. 1533  '*                       DTA%(0)            (FILLED WITH MATCHING DTA INFO)
  299. 1534  '*
  300. 1535  '*                       RETURN.CODE%
  301. 1536  '*
  302. 1537  '* COMMENTS            :
  303. 1538  '*
  304. 1539  '*                       THIS SUBROUTINE SEARCHS A DIRECTORY FOR A
  305. 1540  '*                     FILE WITH MATCHING FILE ATTRIBUTE AND CHARACTERS.
  306. 1541  '*                       THE ASCIIZ STRING CONSISTS OF A DRIVE , PATH ,
  307. 1542  '*                     AND FILENAME. GLOBAL FILENAME CHARACTERS ARE ALLOWED
  308. 1543  '*                     IN THE FILENAME PORTION OF THE STRING.
  309. 1544  '*                       IF A FILE IS FOUND THAT MATCHES THE SPECIFIED
  310. 1545  '*                      DRIVE, PATH, AND FILENAME AND ATTRIBUTE, THE DTA
  311. 1546  '*                      IS FILLED IN AS FOLLOWS:
  312. 1547  '*
  313. 1548  '*                      21 BYTES - RESERVED FOR DOS USE ON SUBSEQUENT
  314. 1549  '*                                 FIND NEXT CALLS
  315. 1550  '*
  316. 1551  '*                       2 BYTES - FILES CREATE/UPDATE TIME
  317. 1552  '*
  318. 1553  '*                       2 BYTES - FILES CREATE/UPDATE DATE
  319. 1554  '*
  320. 1555  '*                       2 BYTES - LOW WORD OF FILE SIZE
  321. 1556  '*
  322. 1557  '*                       2 BYTES - HIGH WORD OF FILE SIZE
  323. 1558  '*
  324. 1559  '*                      13 BYTES - NAME AND EXTENTION OF FILE FOUND
  325. 1560  '*                                 FOLLOWED BY A BYTE OF HEX 00.
  326. 1561  '*
  327. 1562  '*                                 ALL BLANKS ARE REMOVED FROM THE NAME
  328. 1563  '*                                AND EXTENTION, AND IF AN EXTENTION IS
  329. 1564  '*                                PRESENT, IT IS PRECEEDED BY A PERIOD.
  330. 1565  '*                                 THE NAME WOULD BE RETURNED JUST AS YOU
  331. 1566  '*                                HAD ENTERED IT AS A COMMAND PARAMETER,
  332. 1567  '*                                SUCH AS 'TREE.COM'.
  333. 1568  '*                                 IF YOU ASK FOR ALL FILES IN A SUB-DIREC-
  334. 1569  '*                                TORY, THIS ROUTINE WILL RETURN THE '.'
  335. 1570  '*                                THE '..' THAT YOU SEE WHEN YOU DO A 'DIR'
  336. 1571  '*                                ON A SUB-DIRECTORY.
  337. 1572  '*                                 YOU CAN USE THE GET FIRST OPTION TO
  338. 1573  '*                                RETURN THE VOLUMN LABEL, SINCE IT IS
  339. 1574  '*                                BASICALLY AN EMPTY FILE WITH A SPECIAL
  340. 1575  '*                                ATTRIBUTE IN THE DIRECTORY.
  341. 1576  '*
  342. 1577  '**************************************************************************
  343. 1578  CLS
  344. 1579  CLOSE
  345. 1580  DEF SEG
  346. 1581  DEFINT A-Z
  347. 1582  DIM SUBRT%(40)
  348. 1583  OFFSET%=0
  349. 1584  DIM DTA%(40)
  350. 1585  FOR I=0 TO 40:DTA%(I)=-1:NEXT
  351. 1586  FUNCTION.CODE%=&H4E
  352. 1587  PATH$="A:*.*"
  353. 1588  ASCIIZ.STRING$=PATH$+CHR$(0)
  354. 1589  ATTRIBUTE%=255
  355. 1590  RETURN.CODE%=0
  356. 1591  GOSUB 1652
  357. 1592  GOSUB 1608
  358. 1593  GOSUB 1598
  359. 1594  FUNCTION.CODE%=&H4F
  360. 1595  GOSUB 1598
  361. 1596  IF RETURN.CODE%=0 GOTO 1595
  362. 1597  END
  363. 1598  OFFSET%=VARPTR(SUBRT%(0))
  364. 1599  CALL OFFSET%(FUNCTION.CODE%,ATTRIBUTE%,ASCIIZ.STRING$,DTA%(0),RETURN.CODE%)
  365. 1600  PRINT "RETURN CODE        = ";RETURN.CODE%
  366. 1601  IF RETURN.CODE%=18 THEN PRINT :RETURN
  367. 1602  FOR I=30 TO 43
  368. 1603  PRINT CHR$(PEEK(VARPTR(DTA%(0))+I));
  369. 1604  NEXT
  370. 1605  PRINT
  371. 1606  RETURN
  372. 1607  END
  373. 1608  FOR I=0 TO 65
  374. 1609  READ J
  375. 1610  POKE (VARPTR(SUBRT%(0))+I),J
  376. 1611  NEXT
  377. 1612  RETURN
  378. 1613  DATA &H55
  379. 1614  DATA &H89,&HE5
  380. 1615  DATA &H31,&HC0
  381. 1616  DATA &H31,&HC9
  382. 1617  DATA &H31,&HD2
  383. 1618  DATA &H8B,&H76,&H0E
  384. 1619  DATA &H8A,&H24
  385. 1620  DATA &H8B,&H76,&H0C
  386. 1621  DATA &H8B,&H0C
  387. 1622  DATA &H8B,&H76,&H0A
  388. 1623  '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC COMPILER
  389. 1624  DATA &H8B,&H54,&H01
  390. 1625  '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  391. 1626  'DATA &H8B,&H54,&H02
  392. 1627  DATA &HCD,&H21
  393. 1628  DATA &H8B,&H76,&H06
  394. 1629  DATA &H88,&H04
  395. 1630  DATA &H8B,&H76,&H08
  396. 1631  DATA &H89,&HF7
  397. 1632  DATA &H06
  398. 1633  DATA &H31,&HDB
  399. 1634  DATA &HB4,&H2F
  400. 1635  DATA &HCD,&H21
  401. 1636  DATA &HFC
  402. 1637  DATA &HB9,&H2C,&H00
  403. 1638  DATA &H89,&HDE
  404. 1639  DATA &H90,&H90,&H90
  405. 1640  DATA &H1E
  406. 1641  DATA &H06
  407. 1642  DATA &H1F
  408. 1643  DATA &H07
  409. 1644  DATA &HF3
  410. 1645  DATA &HA4
  411. 1646  DATA &H06
  412. 1647  DATA &H1F
  413. 1648  DATA &H07
  414. 1649  DATA &H5D
  415. 1650  DATA &HCA,&H0A,&H00
  416. 1651  END
  417. 1652  RESTORE
  418. 1653  FILENAME$="A:"+"FRSTNEXT.EMU"
  419. 1654  PGM.LEN=65
  420. 1655  OPEN FILENAME$ AS #1 LEN=1
  421. 1656  FIELD #1,1 AS PGM.BYTE$
  422. 1657  FOR I=0 TO PGM.LEN
  423. 1658  READ J
  424. 1659  LSET PGM.BYTE$=CHR$(J)
  425. 1660  PUT #1
  426. 1661  NEXT
  427. 1662  CLOSE
  428. 1663  RESTORE
  429. 1664  RETURN
  430. 2000  '**********************************************************************
  431. 2001  '*
  432. 2002  '* SUBROUTINE FUNCTION : GET VERIFY STATE
  433. 2003  '*
  434. 2004  '* VERSION             : 1.0
  435. 2005  '*
  436. 2006  '* DATE LAST UPDATED   : SEPT 25, 1983
  437. 2007  '*
  438. 2008  '* AUTHOR              : JAMES P MORGAN
  439. 2009  '*
  440. 2010  '* CALL FORMAT         :
  441. 2011  '* ---------------------
  442. 2012  '* CALL OFFSET%(RETURN.CODE%)
  443. 2013  '*
  444. 2014  '* PARAMETERS PASSED   : RETURN.CODE%=0
  445. 2015  '*
  446. 2016  '* PARAMETERS RETURNED : RETURN.CODE%       (00=VERIFY OFF,01=VERIFY ON)
  447. 2017  '*
  448. 2018  '**************************************************************************
  449. 2019  CLS
  450. 2020  CLOSE
  451. 2021  DEF SEG
  452. 2022  DEFINT A-Z
  453. 2023  DIM SUBRT%(40)
  454. 2024  OFFSET%=0
  455. 2025  VERIFY.STATE%=0
  456. 2026  RETURN.CODE%=0
  457. 2027  GOSUB 2051
  458. 2028  GOSUB 2035
  459. 2029  OFFSET%=VARPTR(SUBRT%(0))
  460. 2030  CALL OFFSET%(RETURN.CODE%)
  461. 2031  VERIFY.STATE%=RETURN.CODE%
  462. 2032  PRINT "VERIFY STATE      = ";VERIFY.STATE%
  463. 2033  PRINT "RETURN CODE       = ";RETURN.CODE%
  464. 2034  END
  465. 2035  RESTORE
  466. 2036  FOR I=0 TO 17
  467. 2037  READ J
  468. 2038  POKE (VARPTR(SUBRT%(0))+I),J
  469. 2039  NEXT
  470. 2040  RETURN
  471. 2041  DATA &H55
  472. 2042  DATA &H89,&HE5
  473. 2043  DATA &H30,&HC0
  474. 2044  DATA &HB4,&H54
  475. 2045  DATA &HCD,&H21
  476. 2046  DATA &H8B,&H76,&H06
  477. 2047  DATA &H88,&H04
  478. 2048  DATA &H5D
  479. 2049  DATA &HCA,&H02,&H00
  480. 2050  END
  481. 2051  RESTORE
  482. 2052  FILENAME$="A:"+"VERSTATE.EMU"
  483. 2053  PGM.LEN=17
  484. 2054  OPEN FILENAME$ AS #1 LEN=1
  485. 2055  FIELD #1, 1 AS PGM.BYTE$
  486. 2056  FOR I=0 TO PGM.LEN
  487. 2057  READ J
  488. 2058  LSET PGM.BYTE$=CHR$(J)
  489. 2059  PUT #1
  490. 2060  NEXT
  491. 2061  CLOSE
  492. 2062  RESTORE
  493. 2063  RETURN
  494. 2500  '**********************************************************************
  495. 2501  '*
  496. 2502  '* SUBROUTINE FUNCTION : SET/RESET VERIFY SWITCH
  497. 2503  '*
  498. 2504  '* VERSION             : 1.0
  499. 2505  '*
  500. 2506  '* DATE LAST UPDATED   : SEPT 25, 1983
  501. 2507  '*
  502. 2508  '* AUTHOR              : JAMES P MORGAN
  503. 2509  '*
  504. 2510  '* CALL FORMAT         :
  505. 2511  '* ---------------------
  506. 2512  '* CALL OFFSET%(RETURN.CODE%)
  507. 2513  '*
  508. 2514  '* PARAMETERS PASSED   : RETURN.CODE%=0
  509. 2515  '*
  510. 2516  '* PARAMETERS RETURNED : RETURN.CODE%       (00=VERIFY OFF,01=VERIFY ON)
  511. 2517  '*
  512. 2518  '* COMMENTS           :
  513. 2519  '*                     THIS ROUTINE WILL FLIP/FLOP THE VERIFY STATE
  514. 2520  '*                    SWITCH FROM ON/OFF OR OFF/ON AND RETURN THE CURRENT
  515. 2521  '*                    STATE.
  516. 2522  '*                     WHEN ON,DOS WILL PERFORM A VERIFY OPERATION EACH
  517. 2523  '*                    TIME IT PERFORMS A DISKETTE WRITE TO ASSURE PROPER
  518. 2524  '*                    DATA RECORDING. ALTHOUGH RECORDING ERRORS ARE VERY
  519. 2525  '*                    RARE, THIS FUNCTION IS PROVIDED FOR THOSE USER
  520. 2526  '*                    APPLICATIONS IN WHICH YOU MAY WISH TO VERIFY THE
  521. 2527  '*                    PROPER RECORDING OF CRITICAL DATA.
  522. 2528  '**************************************************************************
  523. 2529  CLS
  524. 2530  CLOSE
  525. 2531  DEF SEG
  526. 2532  DEFINT A-Z
  527. 2533  DIM SUBRT%(40)
  528. 2534  OFFSET%=0
  529. 2535  VERIFY.STATE%=0
  530. 2536  RETURN.CODE%=0
  531. 2537  GOSUB 2566
  532. 2538  GOSUB 2545
  533. 2539  OFFSET%=VARPTR(SUBRT%(0))
  534. 2540  CALL OFFSET%(RETURN.CODE%)
  535. 2541  VERIFY.STATE%=RETURN.CODE%
  536. 2542  PRINT "VERIFY STATE      = ";VERIFY.STATE%
  537. 2543  PRINT "RETURN CODE       = ";RETURN.CODE%
  538. 2544  END
  539. 2545  RESTORE
  540. 2546  FOR I=0 TO 27
  541. 2547  READ J
  542. 2548  POKE (VARPTR(SUBRT%(0))+I),J
  543. 2549  NEXT
  544. 2550  RETURN
  545. 2551  DATA &H55
  546. 2552  DATA &H89,&HE5
  547. 2553  DATA &HB4,&H54
  548. 2554  DATA &HCD,&H21
  549. 2555  DATA &H34,&H01
  550. 2556  DATA &HB2,&H00
  551. 2557  DATA &HB4,&H2E
  552. 2558  DATA &HCD,&H21
  553. 2559  DATA &HB4,&H54
  554. 2560  DATA &HCD,&H21
  555. 2561  DATA &H8B,&H76,&H06
  556. 2562  DATA &H88,&H04
  557. 2563  DATA &H5D
  558. 2564  DATA &HCA,&H02,&H00
  559. 2565  END
  560. 2566  RESTORE
  561. 2567  FILENAME$="A:"+"VERRESET.EMU"
  562. 2568  PGM.LEN=17
  563. 2569  OPEN FILENAME$ AS #1 LEN=1
  564. 2570  FIELD #1, 1 AS PGM.BYTE$
  565. 2571  FOR I=0 TO PGM.LEN
  566. 2572  READ J
  567. 2573  LSET PGM.BYTE$=CHR$(J)
  568. 2574  PUT #1
  569. 2575  NEXT
  570. 2576  CLOSE
  571. 2577  RESTORE
  572. 2578  RETURN
  573. 3000  '**********************************************************************
  574. 3001  '*
  575. 3002  '* SUBROUTINE FUNCTION : GET SYSTEM TIME
  576. 3003  '*
  577. 3004  '* VERSION             : 1.0
  578. 3005  '*
  579. 3006  '* DATE LAST UPDATED   : SEPT 25, 1983
  580. 3007  '*
  581. 3008  '* AUTHOR              : JAMES P MORGAN
  582. 3009  '*
  583. 3010  '* CALL FORMAT         :
  584. 3011  '* ---------------------
  585. 3012  '* CALL OFFSET%(HOURS%,MINUTES%,SECONDS%,HUNDREDS.SECONDS%,RETURN.CODE%)
  586. 3013  '*
  587. 3014  '* PARAMETERS PASSED   : HOURS%=0
  588. 3015  '*                       MINUTES%=0
  589. 3016  '*                       SECONDS%-0
  590. 3017  '*                       HUNDREDS.SECONDS%=0
  591. 3018  '*                       RETURN.CODE%=0
  592. 3019  '*
  593. 3020  '* PARAMETERS RETURNED : HOURS%             (0-23)
  594. 3021  '*                       MINUTES%           (0-59)
  595. 3022  '*                       SECONDS%           (0-59)
  596. 3023  '*                       HUNDREDS.SECONDS%  (0-99)
  597. 3024  '*                       RETURN.CODE%
  598. 3025  '*
  599. 3026  '* COMMENTS           :
  600. 3027  '*                     THIS FORMAT IS READILY CONVERTED TO A PRINTABLE
  601. 3028  '*                    FORM YET CAN BE USED FOR CALCULATIONS , SUCH AS
  602. 3029  '*                    SUBTRACTING ONE TIME VALUE FROM ANOTHER.
  603. 3030  '*
  604. 3031  '**************************************************************************
  605. 3032  CLS
  606. 3033  CLOSE
  607. 3034  DEF SEG
  608. 3035  DEFINT A-Z
  609. 3036  DIM SUBRT%(40)
  610. 3037  OFFSET%=0
  611. 3038  HOURS%=0
  612. 3039  MINUTES%=0
  613. 3040  SECONDS%=0
  614. 3041  HUNDREDS.SECONDS%=0
  615. 3042  RETURN.CODE%=0
  616. 3043  GOSUB 3080
  617. 3044  GOSUB 3054
  618. 3045  OFFSET%=VARPTR(SUBRT%(0))
  619. 3046  CALL OFFSET%(HOURS%,MINUTES%,SECONDS%,HUNDREDS.SECONDS%,RETURN.CODE%)
  620. 3047  PRINT "HOURS             = ";HOURS%
  621. 3048  PRINT "MINUTES           = ";MINUTES%
  622. 3049  PRINT "SECONDS           = ";SECONDS%
  623. 3050  PRINT "1/100 SECONDS     = ";HUNDREDS.SECONDS%
  624. 3051  PRINT "RETURN CODE       = ";RETURN.CODE%
  625. 3052  PRINT "CURRENT TIME      = ";TIME$
  626. 3053  END
  627. 3054  RESTORE
  628. 3055  FOR I=0 TO 41
  629. 3056  READ J
  630. 3057  POKE (VARPTR(SUBRT%(0))+I),J
  631. 3058  NEXT
  632. 3059  RETURN
  633. 3060  DATA &H55
  634. 3061  DATA &H89,&HE5
  635. 3062  DATA &H31,&HC9
  636. 3063  DATA &H31,&HD2
  637. 3064  DATA &HB4,&H2C
  638. 3065  DATA &HCD,&H21
  639. 3066  DATA &H8B,&H76,&H0E
  640. 3067  DATA &H88,&H2C
  641. 3068  DATA &H8B,&H76,&H0C
  642. 3069  DATA &H88,&H0C
  643. 3070  DATA &H8B,&H76,&H0A
  644. 3071  DATA &H88,&H34
  645. 3072  DATA &H8B,&H76,&H08
  646. 3073  DATA &H88,&H14
  647. 3074  DATA &H30,&HD2
  648. 3075  DATA &H8B,&H76,&H06
  649. 3076  DATA &H88,&H14
  650. 3077  DATA &H5D
  651. 3078  DATA &HCA,&H0A,&H00
  652. 3079  END
  653. 3080  RESTORE
  654. 3081  FILENAME$="A:"+"GETTIME.EMU"
  655. 3082  PGM.LEN=41
  656. 3083  OPEN FILENAME$ AS #1 LEN=1
  657. 3084  FIELD #1, 1 AS PGM.BYTE$
  658. 3085  FOR I=0 TO PGM.LEN
  659. 3086  READ J
  660. 3087  LSET PGM.BYTE$=CHR$(J)
  661. 3088  PUT #1
  662. 3089  NEXT
  663. 3090  CLOSE
  664. 3091  RESTORE
  665. 3092  RETURN
  666. 3500  '**********************************************************************
  667. 3501  '*
  668. 3502  '* SUBROUTINE FUNCTION : GET SYSTEM DATE
  669. 3503  '*
  670. 3504  '* VERSION             : 1.0
  671. 3505  '*
  672. 3506  '* DATE LAST UPDATED   : SEPT 25, 1983
  673. 3507  '*
  674. 3508  '* AUTHOR              : JAMES P MORGAN
  675. 3509  '*
  676. 3510  '* CALL FORMAT         :
  677. 3511  '* ---------------------
  678. 3512  '* CALL OFFSET%(CENTURY%,YEAR%,MONTH%,DAY%,RETURN.CODE%)
  679. 3513  '*
  680. 3514  '* PARAMETERS PASSED   : CENTURY%=0
  681. 3515  '*                       YEAR%=0
  682. 3516  '*                       MONTH%=0
  683. 3517  '*                       DAY%=0
  684. 3518  '*                       RETURN.CODE%=0
  685. 3519  '*
  686. 3520  '* PARAMETERS RETURNED : CENTURY%
  687. 3521  '*                       YEAR%
  688. 3522  '*                       MONTH%
  689. 3523  '*                       DAY%
  690. 3524  '*                       RETUURN.CODE%
  691. 3525  '*
  692. 3526  '* COMMENTS           :
  693. 3527  '*                     IF THE TIME-OF-DAY CLOCK ROLLS OVER TO THE NEXT
  694. 3528  '*                    DAY, THE DATA IS ADJUSTED ACCORDINGLY, TAKING
  695. 3529  '*                    INTO ACCOUNT THE NUMBER OF DAYS IN EACH MONTH AND
  696. 3530  '*                    LEAP YEARS.
  697. 3531  '**************************************************************************
  698. 3532  CLS
  699. 3533  CLOSE
  700. 3534  DEF SEG
  701. 3535  DEFINT A-Z
  702. 3536  DIM SUBRT%(40)
  703. 3537  OFFSET%=0
  704. 3538  CENTURY%=0
  705. 3539  YEAR%=0
  706. 3540  MONTH%=0
  707. 3541  DAY%=0
  708. 3542  RETURN.CODE%=0
  709. 3543  GOSUB 3581
  710. 3544  GOSUB 3555
  711. 3545  OFFSET%=VARPTR(SUBRT%(0))
  712. 3546  CALL OFFSET%(CENTURY%,YEAR%,MONTH%,DAY%,RETURN.CODE%)
  713. 3547  PRINT "CENTURY           = ";CENTURY%
  714. 3548  PRINT "YEAR              = ";YEAR%
  715. 3549  PRINT "CENTURY + YEAR    = ";CENTURY%+YEAR%
  716. 3550  PRINT "MONTH             = ";MONTH%
  717. 3551  PRINT "DAY               = ";DAY%
  718. 3552  PRINT "RETURN CODE       = ";RETURN.CODE%
  719. 3553  PRINT "CURRENT DATE      = ";DATE$
  720. 3554  END
  721. 3555  RESTORE
  722. 3556  FOR I=0 TO 42
  723. 3557  READ J
  724. 3558  POKE (VARPTR(SUBRT%(0))+I),J
  725. 3559  NEXT
  726. 3560  RETURN
  727. 3561  DATA &H55
  728. 3562  DATA &H89,&HE5
  729. 3563  DATA &H31,&HC9
  730. 3564  DATA &H31,&HD2
  731. 3565  DATA &HB4,&H2A
  732. 3566  DATA &HCD,&H21
  733. 3567  DATA &H8B,&H76,&H0E
  734. 3568  DATA &H88,&H6C,&H01
  735. 3569  DATA &H8B,&H76,&H0C
  736. 3570  DATA &H88,&H0C
  737. 3571  DATA &H8B,&H76,&H0A
  738. 3572  DATA &H88,&H34
  739. 3573  DATA &H8B,&H76,&H08
  740. 3574  DATA &H88,&H14
  741. 3575  DATA &H8B,&H76,&H06
  742. 3576  DATA &H31,&HD2
  743. 3577  DATA &H89,&H14
  744. 3578  DATA &H5D
  745. 3579  DATA &HCA,&H0A,&H00
  746. 3580  END
  747. 3581  RESTORE
  748. 3582  FILENAME$="A:"+"GETDATE.EMU"
  749. 3583  PGM.LEN=42
  750. 3584  OPEN FILENAME$ AS #1 LEN=1
  751. 3585  FIELD #1, 1 AS PGM.BYTE$
  752. 3586  FOR I=0 TO PGM.LEN
  753. 3587  READ J
  754. 3588  LSET PGM.BYTE$=CHR$(J)
  755. 3589  PUT #1
  756. 3590  NEXT
  757. 3591  CLOSE
  758. 3592  RESTORE
  759. 3593  RETURN
  760. 4000  '**********************************************************************
  761. 4001  '*
  762. 4002  '* SUBROUTINE FUNCTION : GET DOS VERSION NUMBER
  763. 4003  '*
  764. 4004  '* VERSION             : 1.0
  765. 4005  '*
  766. 4006  '* DATE LAST UPDATED   : SEPT 25, 1983
  767. 4007  '*
  768. 4008  '* AUTHOR              : JAMES P MORGAN
  769. 4009  '*
  770. 4010  '* CALL FORMAT         :
  771. 4011  '* ---------------------
  772. 4012  '* CALL OFFSET%(MAJOR.VERSION%,MINOR.VERSION%,RETURN.CODE%)
  773. 4013  '*
  774. 4014  '* PARAMETERS PASSED   : MAJOR.VERSION%=0
  775. 4015  '*                       MINOR.VERSION%=0
  776. 4016  '*                       RETURN.CODE%=0
  777. 4017  '*
  778. 4018  '* PARAMETERS RETURNED : MAJOR.VERSION%  (MAJOR DOS VERSION NUMBER)
  779. 4019  '*                       MINOR.VERSION%  (MINOR DOS VERSION NUMBER)
  780. 4020  '*                       RETURN.CODE%
  781. 4021  '*
  782. 4022  '* COMMENTS           :
  783. 4023  '*                     IF THE MAJOR.VERSION% RETURNS ZERO(0), IT IS
  784. 4024  '*                    ASSUMED THAT THIS IS A PRE-DOS 2.0 SYSTEM.
  785. 4025  '*
  786. 4026  '**************************************************************************
  787. 4027  CLS
  788. 4028  CLOSE
  789. 4029  DEF SEG
  790. 4030  DEFINT A-Z
  791. 4031  DIM SUBRT%(40)
  792. 4032  OFFSET%=0
  793. 4033  MAJOR.VERSION%=0
  794. 4034  MINOR.VERSION%=0
  795. 4035  RETURN.CODE%=0
  796. 4036  GOSUB 4064
  797. 4037  GOSUB 4044
  798. 4038  OFFSET%=VARPTR(SUBRT%(0))
  799. 4039  CALL OFFSET%(MAJOR.VERSION%,MINOR.VERSION%,RETURN.CODE%)
  800. 4040  PRINT "MAJOR.VERSION     = ";MAJOR.VERSION%
  801. 4041  PRINT "MINOR VERSION     = ";MINOR.VERSION%
  802. 4042  PRINT "RETURN CODE       = ";RETURN.CODE%
  803. 4043  END
  804. 4044  RESTORE
  805. 4045  FOR I=0 TO 27
  806. 4046  READ J
  807. 4047  POKE (VARPTR(SUBRT%(0))+I),J
  808. 4048  NEXT
  809. 4049  RETURN
  810. 4050  DATA &H55
  811. 4051  DATA &H89,&HE5
  812. 4052  DATA &HB4,&H30
  813. 4053  DATA &HCD,&H21
  814. 4054  DATA &H8B,&H76,&H0A
  815. 4055  DATA &H88,&H04
  816. 4056  DATA &H8B,&H76,&H08
  817. 4057  DATA &H88,&H24
  818. 4058  DATA &H8B,&H76,&H06
  819. 4059  DATA &H31,&HDB
  820. 4060  DATA &H89,&H1C
  821. 4061  DATA &H5D
  822. 4062  DATA &HCA,&H06,&H00
  823. 4063  END
  824. 4064  RESTORE
  825. 4065  FILENAME$="A:"+"DOSVER.EMU"
  826. 4066  PGM.LEN=27
  827. 4067  OPEN FILENAME$ AS #1 LEN=1
  828. 4068  FIELD #1, 1 AS PGM.BYTE$
  829. 4069  FOR I=0 TO PGM.LEN
  830. 4070  READ J
  831. 4071  LSET PGM.BYTE$=CHR$(J)
  832. 4072  PUT #1
  833. 4073  NEXT
  834. 4074  CLOSE
  835. 4075  RESTORE
  836. 4076  RETURN
  837. 4500  '**********************************************************************
  838. 4501  '*
  839. 4502  '* SUBROUTINE FUNCTION : GET DISK FREE SPACE
  840. 4503  '*
  841. 4504  '* VERSION             : 1.0
  842. 4505  '*
  843. 4506  '* DATE LAST UPDATED   : SEPT 25, 1983
  844. 4507  '*
  845. 4508  '* AUTHOR              : JAMES P MORGAN
  846. 4509  '*
  847. 4510  '* CALL FORMAT         :
  848. 4511  '* ---------------------
  849. 4512  '* CALL OFFSET%(DRIVE%,NUM.ALLOC.UNITS%,NUM.SEC.PER.UNIT%,SECTOR.SIZE%,AVAIL.CLUSTERS%,RETURN.CODE%)
  850. 4513  '*
  851. 4514  '* PARAMETERS PASSED   : DRIVE%                (0=DEFAULT,1=A,2=B..ECT)
  852. 4515  '*                       NUM.ALLOC.UNITS%=0
  853. 4516  '*                       NUM.SEC.PER.UNIT%=0
  854. 4517  '*                       SECTOR.SIZE%=0
  855. 4518  '*                       AVAIL.CLUSTERS%=0
  856. 4519  '*                       RETURN.CODE%=0
  857. 4520  '*
  858. 4521  '* PARAMETERS RETURNED : DRIVE%
  859. 4522  '*                       NUM.ALLOC.UNITS%      (TOTAL CLUSTERS ON THE
  860. 4523  '*                                             DRIVE)
  861. 4524  '*
  862. 4525  '*                       NUM.SEC.PER.UNIT%     (NUMBER OF SECTORS PER
  863. 4526  '*                                             CLUSTER)
  864. 4527  '*
  865. 4528  '*                       SECTOR.SIZE%          (BYTES PER SECTOR)
  866. 4529  '*
  867. 4530  '*                       AVAIL.CLUSTERS%       (NUMBER OF AVAILABLE CLUSTERS)
  868. 4531  '*
  869. 4532  '*                       RETURN.CODE%          (255=INVALID DRIVE)
  870. 4533  '*
  871. 4534  '*
  872. 4535  '* COMMENTS           :
  873. 4536  '*                     THIS DOS FUNCTION CALL RETURNS THE SANE INFO
  874. 4537  '*                    (EXCEPT FOR THE FAT POINTER) AS THE GET FAT POINTER
  875. 4538  '*                    CALL (1BH) DID UNDER PREVIOUS VERSIONS OF DOS.
  876. 4539  '**************************************************************************
  877. 4540  CLS
  878. 4541  CLOSE
  879. 4542  DEF SEG
  880. 4543  DEFINT A-Z
  881. 4544  DIM SUBRT%(40)
  882. 4545  OFFSET%=0
  883. 4546  DRIVE%=1
  884. 4547  NUM.ALLOC.UNITS%=0
  885. 4548  NUM.SEC.PER.UNIT%=0
  886. 4549  SECTOR.SIZE%=0
  887. 4550  AVAIL.CLUSTERS%=0
  888. 4551  RETURN.CODE%=0
  889. 4552  GOSUB 4596
  890. 4553  GOSUB 4564
  891. 4554  OFFSET%=VARPTR(SUBRT%(0))
  892. 4555  CALL OFFSET%(DRIVE%,NUM.ALLOC.UNITS%,NUM.SEC.PER.UNIT%,SECTOR.SIZE%,AVAIL.CLUSTERS%,RETURN.CODE%)
  893. 4556  PRINT "DRIVE REQUESTED   = ";DRIVE%
  894. 4557  PRINT "ALLOC CLUSTERS    = ";NUM.ALLOC.UNITS%
  895. 4558  PRINT "SECTORS PER CLUSTE= ";NUM.SEC.PER.UNIT%
  896. 4559  PRINT "BYTES PER SECTOR  = ";SECTOR.SIZE%
  897. 4560  PRINT "AVAIL. CLUSTERS   = ";AVAIL.CLUSTERS%
  898. 4561  PRINT "FREE SPACE        = ";SECTOR.SIZE%*NUM.SEC.PER.UNIT%*AVAIL.CLUSTERS%
  899. 4562  PRINT "RETURN CODE       = ";RETURN.CODE%
  900. 4563  END
  901. 4564  RESTORE
  902. 4565  FOR I=0 TO 60
  903. 4566  READ J
  904. 4567  POKE (VARPTR(SUBRT%(0))+I),J
  905. 4568  NEXT
  906. 4569  RETURN
  907. 4570  DATA &H55
  908. 4571  DATA &H89,&HE5
  909. 4572  DATA &H31,&HC0
  910. 4573  DATA &H31,&HDB
  911. 4574  DATA &H31,&HC9
  912. 4575  DATA &H31,&HD2
  913. 4576  DATA &H8B,&H76,&H10
  914. 4577  DATA &H8A,&H14
  915. 4578  DATA &HB4,&H36
  916. 4579  DATA &HCD,&H21
  917. 4580  DATA &H8B,&H76,&H0E
  918. 4581  DATA &H88,&H14
  919. 4582  DATA &H88,&H74,&H01
  920. 4583  DATA &H8B,&H76,&H0C
  921. 4584  DATA &H88,&H04
  922. 4585  DATA &H88,&H64,&H01
  923. 4586  DATA &H8B,&H76,&H0A
  924. 4587  DATA &H88,&H0C
  925. 4588  DATA &H88,&H6C,&H01
  926. 4589  DATA &H8B,&H76,&H08
  927. 4590  DATA &H88,&H1C
  928. 4591  DATA &H88,&H7C,&H01
  929. 4592  DATA &H8B,&H76,&H06
  930. 4593  DATA &H89,&H04
  931. 4594  DATA &H5D
  932. 4595  DATA &HCA,&H0C,&H00
  933. 4596  RESTORE
  934. 4597  FILENAME$="A:"+"FREESPAC.EMU"
  935. 4598  PGM.LEN=60
  936. 4599  OPEN FILENAME$ AS #1 LEN=1
  937. 4600  FIELD #1, 1 AS PGM.BYTE$
  938. 4601  FOR I=0 TO PGM.LEN
  939. 4602  READ J
  940. 4603  LSET PGM.BYTE$=CHR$(J)
  941. 4604  PUT #1
  942. 4605  NEXT
  943. 4606  CLOSE
  944. 4607  RESTORE
  945. 4608  RETURN
  946. 5000  '**********************************************************************
  947. 5001  '*
  948. 5002  '* SUBROUTINE FUNCTION : CHANGE/CREATE/REMOVE A DIRECTORY
  949. 5003  '*
  950. 5004  '* VERSION             : 1.0
  951. 5005  '*
  952. 5006  '* DATE LAST UPDATED   : SEPT 25, 1983
  953. 5007  '*
  954. 5008  '* AUTHOR              : JAMES P MORGAN
  955. 5009  '*
  956. 5010  '* CALL FORMAT         :
  957. 5011  '* ---------------------
  958. 5012  '* CALL OFFSET%(FUNCTION.CALL%,ASCIIZ.STRING$,RETURN.CODE%)
  959. 5013  '*
  960. 5014  '* PARAMETERS PASSED   : FUNCTION.CALL%        (&H39 - MKDIR
  961. 5015  '*                                              &H3A - RMDIR
  962. 5016  '*                                              &H3B - CHDIR)
  963. 5017  '*
  964. 5018  '*                       ASCIIZ.STRING$        (THE ASCII STRING  OF THE
  965. 5019  '*                                             DIRECTORY TO BE USED)
  966. 5020  '*
  967. 5021  '*                       RETURN.CODE%=0
  968. 5022  '*
  969. 5023  '* PARAMETERS RETURNED : FUNCTION.CALL%
  970. 5024  '*                       ASCIIZ.STRING$
  971. 5025  '*                       RETURN.CODE%          (SEE ERROR CODE LIST)
  972. 5026  '*
  973. 5027  '*
  974. 5028  '* COMMENTS           :
  975. 5029  '*
  976. 5030  '* EACH OF THE DIRECTORY MAINTENANCE FUNCTIONS ARE DISCUSSED SEPARATELY
  977. 5031  '*
  978. 5032  '*         MKDIR   ------------- CREATE A DIRECTORY
  979. 5033  '*
  980. 5034  '*                THE ASCIIZ STRING CONTAINS THE DRIVE AND DIRECTORY
  981. 5035  '*               PATH NAMES. IF ANY MEMBER OF THE DIRECTORY PATH DOES NOT
  982. 5036  '*               EXIST THEN THE DIRECTORY PATH IS NOT CHANGED. ON RETURN
  983. 5037  '*               A NEW DIRECTORY IS CREATED AT THE END OF THE SPECIFIED
  984. 5038  '*               PATH.
  985. 5039  '*
  986. 5040  '*         RMDIR   ------------- REMOVE A SUB-DIRECTORY
  987. 5041  '*
  988. 5042  '*                THE ASCIIZ STRING CONTAINS THE DRIVE AND DIRECTORY
  989. 5043  '*               PATH NAMES. THE SPECIFIED DIRECTORY IS REMOVED FROM THE
  990. 5044  '*               STRUCTURE. THE CURRENT DIRECTORY CANNOT BE REMOVED.
  991. 5045  '*
  992. 5046  '*         CHDIR   ------------- CHANGE THE CURRENT DIRECTORY
  993. 5047  '*
  994. 5048  '*                THE ASCIIZ STRING CONTAINS THE DRIVE AND DIRECTORY
  995. 5049  '*               PATH NAMES. IF ANY MEMBER OF THE DIRECTORY DOES NOT EXIST
  996. 5050  '*               THEN THE DIRECTORY PATH IS NOT CHANGED.
  997. 5051  '*
  998. 5052  '*************************************************************************
  999. 5053  CLS
  1000. 5054  CLOSE
  1001. 5055  DEF SEG
  1002. 5056  DEFINT A-Z
  1003. 5057  DIM SUBRT%(40)
  1004. 5058  OFFSET%=0
  1005. 5059  FUNCTION.CALL%=&H3B
  1006. 5060  FUNCTION.TYPE$=""
  1007. 5061  PATH.NAME$="C:\EMULATOR"
  1008. 5062  ASCIIZ.STRING$=PATH.NAME$+CHR$(0)
  1009. 5063  RETURN.CODE%=0
  1010. 5064  GOSUB 5099
  1011. 5065  GOSUB 5076
  1012. 5066  OFFSET%=VARPTR(SUBRT%(0))
  1013. 5067  CALL OFFSET%(FUNCTION.CALL%,ASCIIZ.STRING$,RETURN.CODE%)
  1014. 5068  IF FUNCTION.CALL%=&H39 THEN FUNCTION.TYPE$="CREATE A SUB-DIRECTORY"
  1015. 5069  IF FUNCTION.CALL%=&H3A THEN FUNCTION.TYPE$="REMOVE A DIRECTORY"
  1016. 5070  IF FUNCTION.CALL%=&H3B THEN FUNCTION.TYPE$="CHANGE THE CURRENT DIRECTORY"
  1017. 5071  PRINT "FUNCTION CALL CODE= ";FUNCTION.CALL%
  1018. 5072  PRINT "FUNCTION TYPE     = ";FUNCTION.TYPE$
  1019. 5073  PRINT "PATH IS           = ";PATH.NAME$
  1020. 5074  PRINT "RETURN CODE       = ";RETURN.CODE%
  1021. 5075  END
  1022. 5076  RESTORE
  1023. 5077  FOR I=0 TO 30
  1024. 5078  READ J
  1025. 5079  POKE (VARPTR(SUBRT%(0))+I),J
  1026. 5080  NEXT
  1027. 5081  RETURN
  1028. 5082  DATA &H55
  1029. 5083  DATA &H89,&HE5
  1030. 5084  DATA &H31,&HC0
  1031. 5085  DATA &H8B,&H76,&H0A
  1032. 5086  DATA &H8A,&H24
  1033. 5087  DATA &H8B,&H76,&H08
  1034. 5088  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC COMPILER
  1035. 5089  DATA &H8B,&H54,&H01
  1036. 5090  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  1037. 5091  'DATA &H8B,&H54,&H02
  1038. 5092  DATA &HCD,&H21
  1039. 5093  DATA &H72,&H02
  1040. 5094  DATA &H30,&HC0
  1041. 5095  DATA &H8B,&H76,&H06
  1042. 5096  DATA &H88,&H04
  1043. 5097  DATA &H5D
  1044. 5098  DATA &HCA,&H06,&H00
  1045. 5099  RESTORE
  1046. 5100  FILENAME$="A:"+"DIRMAINT.EMU"
  1047. 5101  PGM.LEN=30
  1048. 5102  OPEN FILENAME$ AS #1 LEN=1
  1049. 5103  FIELD #1, 1 AS PGM.BYTE$
  1050. 5104  FOR I=0 TO PGM.LEN
  1051. 5105  READ J
  1052. 5106  LSET PGM.BYTE$=CHR$(J)
  1053. 5107  PUT #1
  1054. 5108  NEXT
  1055. 5109  CLOSE
  1056. 5110  RESTORE
  1057. 5111  RETURN
  1058. 5500  '**********************************************************************
  1059. 5501  '*
  1060. 5502  '* SUBROUTINE FUNCTION : GET/SET CURRENT DEFAULT DISK DRIVE
  1061. 5503  '*
  1062. 5504  '* VERSION             : 1.0
  1063. 5505  '*
  1064. 5506  '* DATE LAST UPDATED   : SEPT 25, 1983
  1065. 5507  '*
  1066. 5508  '* AUTHOR              : JAMES P MORGAN
  1067. 5509  '*
  1068. 5510  '* CALL FORMAT         :
  1069. 5511  '* ---------------------
  1070. 5512  '* CALL OFFSET%(DRIVE%,LOGICAL.DRIVES%,RETURN.CODE%)
  1071. 5513  '*
  1072. 5514  '* PARAMETERS PASSED   : DRIVE%                (0=A,2=B..ECT)
  1073. 5515  '*                       LOGICAL.DRIVES%=0
  1074. 5516  '*                       RETURN.CODE%=0
  1075. 5517  '*
  1076. 5518  '* PARAMETERS RETURNED : DRIVE%
  1077. 5519  '*                       LOGICAL.DRIVES%       (0-MAX LOGICAL DRIVES)
  1078. 5520  '*                       RETURN.CODE%          (CURRENT DEFAULT DRIVE)
  1079. 5521  '*
  1080. 5522  '*
  1081. 5523  '* COMMENTS           :
  1082. 5524  '*                     THIS SUBROUTINE WILL ASSIGN, DRIVE%, AS THE
  1083. 5525  '*                    DEFAULT DRIVE (IF VALID). THE NUMBER OF LOGICAL
  1084. 5526  '*                    DRIVES (TOTAL DISKETTE AND FIXED) ARE RETURNED.
  1085. 5527  '*                     IF THE SYSTEM HAS ONLY ONE DISKETTE DRIVE, IT WILL
  1086. 5528  '*                    BE COUNTED AS TWO TO BE CONSISTANT WITH THE
  1087. 5529  '*                    PHILOSOPHY OF THINKING OF THE SYSTEM AS HAVING
  1088. 5530  '*                    LOGICAL DRIVES "A" AND "B".
  1089. 5531  '*                     AS A SIDE EFFECT, IF YOU GIVE THIS SUBROUTINE
  1090. 5532  '*                    AN INVALID DRIVE (255), IT WILL ONLY RETURN THE
  1091. 5533  '*                    CURRENT DEFAULT DRIVE SO YOU DO NOT NEED TO DO
  1092. 5534  '*                    A DOS FUNCTION CALL &H19, CURRENT DISK.
  1093. 5535  '*
  1094. 5536  '*                      BIOS EQUIPMENT CHECK DETERMINATION (INT 11H)
  1095. 5537  '*                    CAN BE USED TO DETERMINE THE NUMBER OF ACTUAL
  1096. 5538  '*                    PHYSICAL DRIVES.
  1097. 5539  '*
  1098. 5540  '*************************************************************************
  1099. 5541  CLS
  1100. 5542  CLOSE
  1101. 5543  DEF SEG
  1102. 5544  DEFINT A-Z
  1103. 5545  DIM SUBRT%(40)
  1104. 5546  OFFSET%=0
  1105. 5547  DRIVE%=0
  1106. 5548  LOGICAL.DRIVES%=0
  1107. 5549  RETURN.CODE%=0
  1108. 5550  GOSUB 5578
  1109. 5551  GOSUB 5558
  1110. 5552  OFFSET%=VARPTR(SUBRT%(0))
  1111. 5553  CALL OFFSET%(DRIVE%,LOGICAL.DRIVES%,RETURN.CODE%)
  1112. 5554  PRINT "DEFAULT REQUESTED = ";DRIVE%
  1113. 5555  PRINT "LOGICAL DRIVES    = ";LOGICAL.DRIVES%
  1114. 5556  PRINT "NEW DEFAULT DRIVE = ";RETURN.CODE%
  1115. 5557  END
  1116. 5558  RESTORE
  1117. 5559  FOR I=0 TO 29
  1118. 5560  READ J
  1119. 5561  POKE (VARPTR(SUBRT%(0))+I),J
  1120. 5562  NEXT
  1121. 5563  RETURN
  1122. 5564  DATA &H55
  1123. 5565  DATA &H89,&HE5
  1124. 5566  DATA &H8B,&H76,&H0A
  1125. 5567  DATA &H8A,&H14
  1126. 5568  DATA &HB4,&H0E
  1127. 5569  DATA &HCD,&H21
  1128. 5570  DATA &H8B,&H76,&H08
  1129. 5571  DATA &H88,&H04
  1130. 5572  DATA &HB4,&H19
  1131. 5573  DATA &HCD,&H21
  1132. 5574  DATA &H8B,&H76,&H06
  1133. 5575  DATA &H88,&H04
  1134. 5576  DATA &H5D
  1135. 5577  DATA &HCA,&H06,&H00
  1136. 5578  RESTORE
  1137. 5579  FILENAME$="A:"+"DRIVEDEF.EMU"
  1138. 5580  PGM.LEN=29
  1139. 5581  OPEN FILENAME$ AS #1 LEN=1
  1140. 5582  FIELD #1, 1 AS PGM.BYTE$
  1141. 5583  FOR I=0 TO PGM.LEN
  1142. 5584  READ J
  1143. 5585  LSET PGM.BYTE$=CHR$(J)
  1144. 5586  PUT #1
  1145. 5587  NEXT
  1146. 5588  CLOSE
  1147. 5589  RESTORE
  1148. 5590  RETURN
  1149. 6000  '**********************************************************************
  1150. 6001  '*
  1151. 6002  '* SUBROUTINE FUNCTION : GET CURRENT DIRECTORY
  1152. 6003  '*
  1153. 6004  '* VERSION             : 1.0
  1154. 6005  '*
  1155. 6006  '* DATE LAST UPDATED   : SEPT 25, 1983
  1156. 6007  '*
  1157. 6008  '* AUTHOR              : JAMES P MORGAN
  1158. 6009  '*
  1159. 6010  '* CALL FORMAT         :
  1160. 6011  '* ---------------------
  1161. 6012  '* CALL OFFSET%(DRIVE%,ASCIIZ.STRING$,RETURN.CODE%)
  1162. 6013  '*
  1163. 6014  '* PARAMETERS PASSED   : DRIVE%                (0=DEFAULT,1=A,2=B..ECT)
  1164. 6015  '*                       ASCIIZ.STRING$        (AT LEAST A 64 BYTE
  1165. 6016  '*                                             CHARACTER STRING RETURN
  1166. 6017  '*                                             AREA)
  1167. 6018  '*
  1168. 6019  '*                       RETURN.CODE%=0
  1169. 6020  '*
  1170. 6021  '* PARAMETERS RETURNED : DRIVE%
  1171. 6022  '*                       ASCIIZ.STRING$        (CURRENT DIRECTORY)
  1172. 6023  '*                       RETURN.CODE%          (SEE ERROR CODE LIST)
  1173. 6024  '*
  1174. 6025  '*
  1175. 6026  '* COMMENTS           :
  1176. 6027  '*                     THIS SUBROUTINE WILL RETURN THE CURRENT DIRECTORY
  1177. 6028  '*                    FOR THE SPECIFIED DRIVE. THE FULL PATH NAME ,
  1178. 6029  '*                    STARTING WITH THE ROOT DIRECTORY IS RETURNED.
  1179. 6030  '*                     THE DRIVE LETTER WILL NOT BE PART OF THE RETURNED
  1180. 6031  '*                    STRING. THE STRING WILL NOT BEGIN WITH THE "\" AND
  1181. 6032  '*                    WILL BE TERMINATED WITH A BYTE CONTAINING A HEX 00.
  1182. 6033  '*
  1183. 6034  '*************************************************************************
  1184. 6035  CLS
  1185. 6036  CLOSE
  1186. 6037  DEF SEG
  1187. 6038  DEFINT A-Z
  1188. 6039  DIM SUBRT%(40)
  1189. 6040  OFFSET%=0
  1190. 6041  DRIVE%=0
  1191. 6042  ASCIIZ.STRING$=STRING$(80,0)
  1192. 6043  CURRENT.DIRECTORY$=""
  1193. 6044  RETURN.CODE%=0
  1194. 6045  GOSUB 6079
  1195. 6046  GOSUB 6057
  1196. 6047  OFFSET%=VARPTR(SUBRT%(0))
  1197. 6048  CALL OFFSET%(DRIVE%,ASCIIZ.STRING$,RETURN.CODE%)
  1198. 6049  IF RETURN.CODE%<>0 THEN CURRENT.DIRECTORY$="INVALID DRIVE SPECIFIED":GOTO 6053
  1199. 6050  INSTR.LOC=INSTR(ASCIIZ.STRING$,CHR$(0))
  1200. 6051  IF INSTR.LOC<2 THEN CURRENT.DIRECTORY$="\":GOTO 6053
  1201. 6052  CURRENT.DIRECTORY$="\"+LEFT$(ASCIIZ.STRING$,INSTR.LOC-1)
  1202. 6053  PRINT "DRIVE REQUESTED   = ";DRIVE%
  1203. 6054  PRINT "CURRENT DIRECTORY = ";CURRENT.DIRECTORY$
  1204. 6055  PRINT "RETURN CODE       = ";RETURN.CODE%
  1205. 6056  END
  1206. 6057  RESTORE
  1207. 6058  FOR I=0 TO 28
  1208. 6059  READ J
  1209. 6060  POKE (VARPTR(SUBRT%(0))+I),J
  1210. 6061  NEXT
  1211. 6062  RETURN
  1212. 6063  DATA &H55
  1213. 6064  DATA &H89,&HE5
  1214. 6065  DATA &H8B,&H76,&H0A
  1215. 6066  DATA &H8A,&H14
  1216. 6067  DATA &H8B,&H5E,&H08
  1217. 6068  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC COMPILER
  1218. 6069  DATA &H8B,&H77,&H01
  1219. 6070  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  1220. 6071  'DATA &H8B,&H77,&H02
  1221. 6072  DATA &H31,&HC0
  1222. 6073  DATA &HB4,&H47
  1223. 6074  DATA &HCD,&H21
  1224. 6075  DATA &H8B,&H76,&H06
  1225. 6076  DATA &H88,&H04
  1226. 6077  DATA &H5D
  1227. 6078  DATA &HCA,&H06,&H00
  1228. 6079  RESTORE
  1229. 6080  FILENAME$="A:"+"DIRCURR.EMU"
  1230. 6081  PGM.LEN=28
  1231. 6082  OPEN FILENAME$ AS #1 LEN=1
  1232. 6083  FIELD #1, 1 AS PGM.BYTE$
  1233. 6084  FOR I=0 TO PGM.LEN
  1234. 6085  READ J
  1235. 6086  LSET PGM.BYTE$=CHR$(J)
  1236. 6087  PUT #1
  1237. 6088  NEXT
  1238. 6089  CLOSE
  1239. 6090  RESTORE
  1240. 6091  RETURN
  1241. 6500  '**********************************************************************
  1242. 6501  '*
  1243. 6502  '* SUBROUTINE FUNCTION : RENAME A FILE
  1244. 6503  '*
  1245. 6504  '* VERSION             : 1.0
  1246. 6505  '*
  1247. 6506  '* DATE LAST UPDATED   : SEPT 25, 1983
  1248. 6507  '*
  1249. 6508  '* AUTHOR              : JAMES P MORGAN
  1250. 6509  '*
  1251. 6510  '* CALL FORMAT         :
  1252. 6511  '* ---------------------
  1253. 6512  '* CALL OFFSET%(ASCIIZ.STRING1$,ASCIIZ.STRING2$,RETURN.CODE%)
  1254. 6513  '*
  1255. 6514  '* PARAMETERS PASSED   : ASCIIZ.STRING1$       (THE ASCII STRING  OF THE
  1256. 6515  '*                                             CURRENT FILE NAME)
  1257. 6516  '*
  1258. 6517  '*                       ASCIIZ.STRING2$       (THE ASCII STRING  OF THE
  1259. 6518  '*                                             NEW FILE NAME)
  1260. 6519  '*
  1261. 6520  '*                       RETURN.CODE%=0
  1262. 6521  '*
  1263. 6522  '* PARAMETERS RETURNED : ASCIIZ.STRING1$
  1264. 6523  '*                       ASCIIZ.STRING2$
  1265. 6524  '*                       RETURN.CODE%          (SEE ERROR CODE LIST)
  1266. 6525  '*
  1267. 6526  '*
  1268. 6527  '* COMMENTS           :
  1269. 6528  '*                     THIS SUBROUTINE WILL RENAME A DIRECTORY ENTRY
  1270. 6529  '*                    ASSOCIATED WITH A FILE NAME.
  1271. 6530  '*                     THE ASCIIZ.STRING CONSISTS OF A DRIVE, PATH AND
  1272. 6531  '*                    FILE NAME .GLOBAL FILE NAME CHARACTERS ARE NOT
  1273. 6532  '*                    ALLOWED IN ANY PART OF THE STRING.
  1274. 6533  '*                     IF A DRIVE IS SPECIFIED IN THE SECOND STRING, IT
  1275. 6534  '*                    MUST BE THE SAME AS THE DRIVE SPECIFIED OR IMPLIED
  1276. 6535  '*                    IN THE FIRST STRING. THE DIRECTORY PATHS NEED NOT BE
  1277. 6536  '*                    THE SAME, ALLOWING A FILE TO BE MOVED TO ANOTHER
  1278. 6537  '*                    DIRECTORY AND RENAMED IN THE PROCESS.
  1279. 6538  '*
  1280. 6539  '*
  1281. 6540  '*************************************************************************
  1282. 6541  CLS
  1283. 6542  CLOSE
  1284. 6543  DEF SEG
  1285. 6544  DEFINT A-Z
  1286. 6545  DIM SUBRT%(40)
  1287. 6546  OFFSET%=0
  1288. 6547  ASCIIZ.STRING2$="A:\CNTLBRK.EMU"+CHR$(0)
  1289. 6548  ASCIIZ.STRING1$="A:\CNTLBRAK.EMU"+CHR$(0)
  1290. 6549  RETURN.CODE%=0
  1291. 6550  GOSUB 6587
  1292. 6551  GOSUB 6558
  1293. 6552  OFFSET%=VARPTR(SUBRT%(0))
  1294. 6553  CALL OFFSET%(ASCIIZ.STRING1$,ASCIIZ.STRING2$,RETURN.CODE%)
  1295. 6554  PRINT "OLD FILE NAME     = ";LEFT$(ASCIIZ.STRING1$,LEN(ASCIIZ.STRING1$)-1)
  1296. 6555  PRINT "NEW FILE NAME     = ";LEFT$(ASCIIZ.STRING2$,LEN(ASCIIZ.STRING2$)-1)
  1297. 6556  PRINT "RETURN CODE       = ";RETURN.CODE%
  1298. 6557  END
  1299. 6558  RESTORE
  1300. 6559  FOR I=0 TO 37
  1301. 6560  READ J
  1302. 6561  POKE (VARPTR(SUBRT%(0))+I),J
  1303. 6562  NEXT
  1304. 6563  RETURN
  1305. 6564  DATA &H55
  1306. 6565  DATA &H89,&HE5
  1307. 6566  DATA &H31,&HC0
  1308. 6567  DATA &H31,&HD2
  1309. 6568  DATA &H31,&HFF
  1310. 6569  DATA &H8B,&H76,&H0A
  1311. 6570  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC COMPILER
  1312. 6571  DATA &H8B,&H54,&H01
  1313. 6572  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  1314. 6573  'DATA &H8B,&H54,&H02
  1315. 6574  DATA &H8B,&H76,&H08
  1316. 6575  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC COMPILER
  1317. 6576  DATA &H8B,&H7C,&H01
  1318. 6577  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  1319. 6578  'DATA &H8B,&H7C,&H02
  1320. 6579  DATA &HB4,&H56
  1321. 6580  DATA &HCD,&H21
  1322. 6581  DATA &H72,&H02
  1323. 6582  DATA &H30,&HC0
  1324. 6583  DATA &H8B,&H76,&H06
  1325. 6584  DATA &H88,&H04
  1326. 6585  DATA &H5D
  1327. 6586  DATA &HCA,&H06,&H00
  1328. 6587  RESTORE
  1329. 6588  FILENAME$="A:"+"RENFILE.EMU"
  1330. 6589  PGM.LEN=37
  1331. 6590  OPEN FILENAME$ AS #1 LEN=1
  1332. 6591  FIELD #1, 1 AS PGM.BYTE$
  1333. 6592  FOR I=0 TO PGM.LEN
  1334. 6593  READ J
  1335. 6594  LSET PGM.BYTE$=CHR$(J)
  1336. 6595  PUT #1
  1337. 6596  NEXT
  1338. 6597  CLOSE
  1339. 6598  RESTORE
  1340. 6599  RETURN
  1341. 7000  '**********************************************************************
  1342. 7001  '*
  1343. 7002  '* SUBROUTINE FUNCTION : DELETE A FILE FROM A SPECIFIC DIRECTORY (UNLINK)
  1344. 7003  '*
  1345. 7004  '* VERSION             : 1.0
  1346. 7005  '*
  1347. 7006  '* DATE LAST UPDATED   : SEPT 25, 1983
  1348. 7007  '*
  1349. 7008  '* AUTHOR              : JAMES P MORGAN
  1350. 7009  '*
  1351. 7010  '* CALL FORMAT         :
  1352. 7011  '* ---------------------
  1353. 7012  '* CALL OFFSET%(ASCIIZ.STRING$,RETURN.CODE%)
  1354. 7013  '*
  1355. 7014  '* PARAMETERS PASSED   : ASCIIZ.STRING$        (THE ASCII STRING  OF THE
  1356. 7015  '*                                             FILE TO BE DELETED)
  1357. 7016  '*
  1358. 7017  '*                       RETURN.CODE%=0
  1359. 7018  '*
  1360. 7019  '* PARAMETERS RETURNED : ASCIIZ.STRING$
  1361. 7020  '*                       RETURN.CODE%          (SEE ERROR CODE LIST)
  1362. 7021  '*
  1363. 7022  '*
  1364. 7023  '* COMMENTS           :
  1365. 7024  '*                     THIS SUBROUTINE WILL REMOVE A DIRECTORY ENTRY
  1366. 7025  '*                    ASSOCIATED WITH A FILE NAME.
  1367. 7026  '*                     THE ASCIIZ.STRING CONSISTS OF A DRIVE, PATH AND
  1368. 7027  '*                    FILE NAME .GLOBAL FILE NAME CHARACTERS ARE NOT
  1369. 7028  '*                    ALLOWED IN ANY PART OF THE STRING.
  1370. 7029  '*                     READ-ONLY FILES CANNOT BE DELETED WITH THIS CALL.
  1371. 7030  '*                    TO DELETE ONE OF THESE FILES, FIRST USE AN INT 43H
  1372. 7031  '*                    CALL (OR THE CHANGE MODE SUBROUTINE INCLUDED WITH
  1373. 7032  '*                    THIS SERIES OF SUBROUTINES) TO CHANGE THE FILES
  1374. 7033  '*                    ATTRIBUTE TO ZERO(0) , THEN DELETE THE FILE.
  1375. 7034  '*************************************************************************
  1376. 7035  CLS
  1377. 7036  CLOSE
  1378. 7037  DEF SEG
  1379. 7038  DEFINT A-Z
  1380. 7039  DIM SUBRT%(40)
  1381. 7040  OFFSET%=0
  1382. 7041  ASCIIZ.STRING$="C:\CNTLBRK.EMU"+CHR$(0)
  1383. 7042  RETURN.CODE%=0
  1384. 7043  GOSUB 7073
  1385. 7044  GOSUB 7050
  1386. 7045  OFFSET%=VARPTR(SUBRT%(0))
  1387. 7046  CALL OFFSET%(ASCIIZ.STRING$,RETURN.CODE%)
  1388. 7047  PRINT "DELETED FILE NAME = ";LEFT$(ASCIIZ.STRING$,LEN(ASCIIZ.STRING$)-1)
  1389. 7048  PRINT "RETURN CODE       = ";RETURN.CODE%
  1390. 7049  END
  1391. 7050  RESTORE
  1392. 7051  FOR I=0 TO 29
  1393. 7052  READ J
  1394. 7053  POKE (VARPTR(SUBRT%(0))+I),J
  1395. 7054  NEXT
  1396. 7055  RETURN
  1397. 7056  DATA &H55
  1398. 7057  DATA &H89,&HE5
  1399. 7058  DATA &H31,&HC0
  1400. 7059  DATA &H31,&HD2
  1401. 7060  DATA &H8B,&H76,&H08
  1402. 7061  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC COMPILER
  1403. 7062  DATA &H8B,&H54,&H01
  1404. 7063  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  1405. 7064  'DATA &H8B,&H54,&H02
  1406. 7065  DATA &HB4,&H41
  1407. 7066  DATA &HCD,&H21
  1408. 7067  DATA &H72,&H02
  1409. 7068  DATA &H30,&HC0
  1410. 7069  DATA &H8B,&H76,&H06
  1411. 7070  DATA &H88,&H04
  1412. 7071  DATA &H5D
  1413. 7072  DATA &HCA,&H04,&H00
  1414. 7073  RESTORE
  1415. 7074  FILENAME$="A:"+"DELFILE.EMU"
  1416. 7075  PGM.LEN=29
  1417. 7076  OPEN FILENAME$ AS #1 LEN=1
  1418. 7077  FIELD #1, 1 AS PGM.BYTE$
  1419. 7078  FOR I=0 TO PGM.LEN
  1420. 7079  READ J
  1421. 7080  LSET PGM.BYTE$=CHR$(J)
  1422. 7081  PUT #1
  1423. 7082  NEXT
  1424. 7083  CLOSE
  1425. 7084  RESTORE
  1426. 7085  RETURN
  1427. 7500  '**********************************************************************
  1428. 7501  '*
  1429. 7502  '* SUBROUTINE FUNCTION : CHANGE A FILE'S MODE (ATTRIBUTE)
  1430. 7503  '*
  1431. 7504  '* VERSION             : 1.0
  1432. 7505  '*
  1433. 7506  '* DATE LAST UPDATED   : SEPT 25, 1983
  1434. 7507  '*
  1435. 7508  '* AUTHOR              : JAMES P MORGAN
  1436. 7509  '*
  1437. 7510  '* CALL FORMAT         :
  1438. 7511  '* ---------------------
  1439. 7512  '* CALL OFFSET%(FUNCTION.CODE%,ATTRIBUTE%,ASCIIZ.STRING$,RETURN.CODE%)
  1440. 7513  '*
  1441. 7514  '* PARAMETERS PASSED   : FUNCTION.CODE%        (00=RETURN ATTRIBUTE
  1442. 7515  '*                                              01=CHANGE ATTRIBUTE
  1443. 7517  '*
  1444. 7518  '*                       ATTRIBUTE%            (FILE ATTRIBUTE)
  1445. 7519  '*
  1446. 7520  '*                       ASCIIZ.STRING$        (THE ASCII STRING  OF THE
  1447. 7521  '*                                             FILE)
  1448. 7522  '*
  1449. 7523  '*                       RETURN.CODE%=0
  1450. 7524  '*
  1451. 7525  '* PARAMETERS RETURNED : FUNCTION.CODE%
  1452. 7526  '*                       ATTRIBUTE%            (FILE ATTRIBUTE)
  1453. 7527  '*                       ASCIIZ.STRING$
  1454. 7528  '*                       RETURN.CODE%          (SEE ERROR CODE LIST)
  1455. 7529  '*
  1456. 7530  '*
  1457. 7531  '* COMMENTS           :
  1458. 7532  '*                     IF THE FUNCTION.CODE% IS SET TO 00 THEN THE FILES
  1459. 7533  '*                    CURRENT ATTRIBUTE WILL BE RETURNED, ELSE IF THE
  1460. 7534  '*                    FUNCTION.CODE% IS SET TO 01, THE FILE'S ATTRIBUTE
  1461. 7535  '*                    WILL BE CHANGED TO THE ATTRIBUTE% PASSED TO THE
  1462. 7536  '*                    SUBROUTINE.
  1463. 7537  '*                     THE ASCIIZ STRING CONSISTS OF THE DRIVE, PATH, AND
  1464. 7538  '*                    FILENAME.
  1465. 7539  '*                     SEEMS THAT THIS DOS FUNCTION CALL WILL NOT LET YOU
  1466. 7540  '*                    CHANGE A FILES MODE TO THAT OF A VOLUME LABEL (&H8).
  1467. 7541  '*
  1468. 7542  '*
  1469. 7543  '*************************************************************************
  1470. 7544  '*
  1471. 7545  '*************** FILE ATTRIBUTE BYTES - VALUES IN HEXADECIMAL ***********
  1472. 7546  '*
  1473. 7547  '*            01H - FILE IS READ ONLY          (CAN BE USED WITH OTHERS)
  1474. 7548  '*            02H - HIDDEN FILE
  1475. 7549  '*            04H - SYSTEM FILE
  1476. 7550  '*            08H - VOLUME LABEL               (ONLY FIRST 11 CHARACTERS)
  1477. 7551  '*            10H - SUB-DIRECTORY ENTRY
  1478. 7552  '*            20H - ARCHIVE BIT                (CAN BE USED WITH OTHERS
  1479. 7553  '*                                  SET WHEN FILE WRITTEN TO AND CLOSED)
  1480. 7554  CLS
  1481. 7555  CLOSE
  1482. 7556  DEF SEG
  1483. 7557  DEFINT A-Z
  1484. 7558  DIM SUBRT%(40)
  1485. 7559  OFFSET%=0
  1486. 7560  FUNCTION.CODE%=1
  1487. 7561  ATTRIBUTE%=0
  1488. 7562  ATTRIBUTE.SENT%=ATTRIBUTE%
  1489. 7563  PATH.NAME$="C:DOSVER.EMU"
  1490. 7564  ASCIIZ.STRING$=PATH.NAME$+CHR$(0)
  1491. 7565  RETURN.CODE%=0
  1492. 7566  GOSUB 7606
  1493. 7567  GOSUB 7576
  1494. 7568  OFFSET%=VARPTR(SUBRT%(0))
  1495. 7569  CALL OFFSET%(FUNCTION.CODE%,ATTRIBUTE%,ASCIIZ.STRING$,RETURN.CODE%)
  1496. 7570  PRINT "FUNCTION REQUESTED= ";FUNCTION.CODE%
  1497. 7571  PRINT "FILE PATH         = ";PATH.NAME$
  1498. 7572  PRINT "ATTRIBUTE SENT    = ";ATTRIBUTE.SENT%
  1499. 7573  PRINT "ATTRIBUTE RETURNED= ";ATTRIBUTE%
  1500. 7574  PRINT "RETURN CODE       = ";RETURN.CODE%
  1501. 7575  END
  1502. 7576  RESTORE
  1503. 7577  FOR I=0 TO 46
  1504. 7578  READ J
  1505. 7579  POKE (VARPTR(SUBRT%(0))+I),J
  1506. 7580  NEXT
  1507. 7581  RETURN
  1508. 7582  DATA &H55
  1509. 7583  DATA &H89,&HE5
  1510. 7584  DATA &H31,&HC0
  1511. 7585  DATA &H31,&HC9
  1512. 7586  DATA &H31,&HD2
  1513. 7587  DATA &H8B,&H76,&H0C
  1514. 7588  DATA &H8A,&H04
  1515. 7589  DATA &H8B,&H76,&H08
  1516. 7590  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC COMPILER
  1517. 7591  DATA &H8B,&H54,&H01
  1518. 7592  '********COMMENT OUT THE FOLLOWING DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  1519. 7593  'DATA &H8B,&H54,&H02
  1520. 7594  DATA &H8B,&H76,&H0A
  1521. 7595  DATA &H8B,&H0C
  1522. 7596  DATA &HB4,&H43
  1523. 7597  DATA &HCD,&H21
  1524. 7598  DATA &H72,&H02
  1525. 7599  DATA &H30,&HC0
  1526. 7600  DATA &H8B,&H76,&H06
  1527. 7601  DATA &H88,&H04
  1528. 7602  DATA &H8B,&H76,&H0A
  1529. 7603  DATA &H89,&H0C
  1530. 7604  DATA &H5D
  1531. 7605  DATA &HCA,&H08,&H00
  1532. 7606  RESTORE
  1533. 7607  FILENAME$="A:"+"CHNGMODE.EMU"
  1534. 7608  PGM.LEN=46
  1535. 7609  OPEN FILENAME$ AS #1 LEN=1
  1536. 7610  FIELD #1, 1 AS PGM.BYTE$
  1537. 7611  FOR I=0 TO PGM.LEN
  1538. 7612  READ J
  1539. 7613  LSET PGM.BYTE$=CHR$(J)
  1540. 7614  PUT #1
  1541. 7615  NEXT
  1542. 7616  CLOSE
  1543. 7617  RESTORE
  1544. 7618  RETURN
  1545.